package io.terminus.spzx.order.service;

import com.github.pagehelper.PageInfo;
import io.terminus.spzx.model.dto.h5.OrderInfoDto;
import io.terminus.spzx.model.entity.order.OrderInfo;
import io.terminus.spzx.model.vo.h5.TradeVo;

/**
 * @Author lichunlong lcl253137@alibaba-inc.com
 * @Desc 【移动端】订单管理Service接口
 * @Date 2024-12-08
 */
public interface OrderService {

    /**
     * 购物车结算
     *
     * @return 结算信息
     */
    TradeVo getTrade();

    /**
     * 提交订单
     *
     * @param orderInfoDto 订单信息
     * @return 订单id
     */
    Long submitOrder(OrderInfoDto orderInfoDto);

    /**
     * 获取订单信息
     *
     * @param orderId 订单id
     * @return 订单信息
     */
    OrderInfo getOrderInfo(Long orderId);

    /**
     * 立即购买
     *
     * @param skuId 商品skuId
     * @return 结算信息
     */
    TradeVo buy(Long skuId);

    /**
     * 分页查询用户订单
     *
     * @param page        当前页码
     * @param limit       每页记录数
     * @param orderStatus 订单状态
     * @return 订单信息
     */
    PageInfo<OrderInfo> findUserPage(Integer page, Integer limit, Integer orderStatus);

    /**
     * 根据订单号查询订单
     *
     * @param orderNo 订单编号
     * @return 订单信息
     */
    OrderInfo getByOrderNo(String orderNo);

    /**
     * 更新订单状态
     *
     * @param orderNo     订单编号
     * @param orderStatus 订单状态
     */
    void updateOrderStatus(String orderNo, Integer orderStatus);
}
